package com.sgcc.pda.api;

import com.sgcc.pda.frme.protocol.ws.sendbean.EpcChoiceLabel2006;
import com.sgcc.pda.frme.protocol.ws.sendbean.EpcPanCun2005;
import com.sgcc.pda.frme.protocol.ws.sendbean.EpcReadDataParams2008;
import com.sgcc.pda.frme.protocol.ws.sendbean.EpcWriteDataParams2009;
import com.sgcc.pda.frme.protocol.ws.sendbean.GBChoiceLabel200D;
import com.sgcc.pda.frme.protocol.ws.sendbean.GBPanCun200C;
import com.sgcc.pda.frme.protocol.ws.sendbean.GBReadDataParams200F;
import com.sgcc.pda.frme.protocol.ws.sendbean.GBWriteDataParams2010;
import com.sgcc.pda.frme.protocol.ws.sendbean.MeterErrorParams;
import com.sgcc.pda.frme.protocol.ws.sendbean.MeterJXCWDataParams;
import com.sgcc.pda.frme.protocol.ws.sendbean.RS485Params;
import com.sgcc.pda.frme.protocol.ws.sendbean.SecretKeyParams;
import com.sgcc.pda.frme.protocol.ws.sendbean.SetMeterErrorParams;
import com.sgcc.pda.frme.protocol.ws.sendbean.SimParams;
import com.sgcc.pda.frme.protocol.ws.sendbean.ZaiboCheckParams;

/**
 * 描 述：外设管理类
 * 作 者：guorongxin
 * 时 间： 2020-03-19
 * 版 本：1.0
 * 版 权：Copyright (c) 2019 remarkables-united.Co.Ltd. All rights reserved.
 */
public interface IWSManager {

    /**
     * 获取外设信息
     *
     * @return
     */
    String getWSInfo();

    /**
     * 获取外设的设备状态
     *
     * @return
     */
    String getWSStatus();

    /**
     * 获取外设故障
     *
     * @return
     */
    String getWSError();

    /**
     * 停止外设正在执行的任务
     *
     * @return
     */
    String stopWSTask();

    /**
     * 复位命令
     *
     * @return
     */
    String resetTask();

    /**
     * 获取sim卡信息
     *
     * @return
     */
    String getSimInfo();

    /**
     * 下发sim卡参数
     *
     * @param simParams
     * @return
     */
    String setSimParams(SimParams simParams);

    /**
     * 获取sim卡检测参数
     *
     * @return
     */
    String getSimCheckInfo();

    /**
     * 电能表整机检测
     *
     * @param zaiboParams
     * @return
     */
    String checkMeterDevice(ZaiboCheckParams zaiboParams);

    /**
     * 采集器整机检测
     *
     * @param zaiboParams
     * @return
     */
    String checkCollectorDevice(ZaiboCheckParams zaiboParams);

    /**
     * 终端/集中器整机检测
     *
     * @param zaiboParams
     * @return
     */
    String checkTerminalDevice(ZaiboCheckParams zaiboParams);

    /**
     * 电能表 模块 检测
     *
     * @param zaiboParams
     * @return
     */
    String checkMeterModule(ZaiboCheckParams zaiboParams);

    /**
     * 采集器 模块 检测
     *
     * @param zaiboParams
     * @return
     */
    String checkCollectorModule(ZaiboCheckParams zaiboParams);

    /**
     * 终端/集中器 模块 检测
     *
     * @param zaiboParams
     * @return
     */
    String checkTerminalModule(ZaiboCheckParams zaiboParams);

    /**
     * 获取环境温度
     *
     * @return
     */
    String getEnvironmentWD();

    /**
     * 获取环境湿度
     *
     * @return
     */
    String getEnviromentSD();

    /**
     * 获取电能表误差数据
     *
     * @param params
     * @return
     */
    String getMeterErrorData(MeterErrorParams params);

    /**
     * 获取电能表谐波数据
     *
     * @param type
     * @return
     */
    String getMeterXieboData(String type);

    /**
     * 获取电能表接线错误数据
     *
     * @param params
     * @return
     */
    String getMeterLineErrorData(MeterJXCWDataParams params);

    /**
     * 串户检测
     *
     * @param userNo 用户编号
     * @return
     */
    String checkChuanhu(String userNo);

    /**
     * 进行台区检测 开始
     *
     * @param param 台区识别状态字
     * @return
     */
    String checkTaiquStart(String param);

    /**
     * 获取台区识别结果
     *
     * @param mode 台区分支模式
     * @return
     */
    String getTaiquResult(String mode);

    /**
     * 获取电能表故障
     *
     * @param meterAddr 被测表地址
     * @return
     */
    String getMeterTrouble(String meterAddr);

    /**
     * 设置电能表误差参数
     *
     * @param params
     * @return
     */
    String setErrorParams(SetMeterErrorParams params);

    /**
     * 设置电能表误差参数
     *
     * @param params
     * @return
     */
    String setErrorParams(String params);

    /**
     * 获取电能表误差检测参数
     *
     * @return
     */
    String getMeterErrorParams();

    /**
     * 检测场强数据
     *
     * @return
     */
    String checkTesla();

    /**
     * 485参数查询
     *
     * @return
     */
    String get485Params();

    /**
     * 设置外设485参数
     *
     * @param params
     * @return
     */
    String set485Params(RS485Params params);

    /**
     * 设置外设485参数
     *
     * @param params
     * @return
     */
    String set485Params(String params);

    /**
     * epc盘存 2005
     *
     * @param panCun2005
     * @return
     */
    String epcPancun(EpcPanCun2005 panCun2005);

    /**
     * epc 选择标签2006
     *
     * @param choiceLabel2006
     * @return
     */
    String epcChoiceLabel(EpcChoiceLabel2006 choiceLabel2006);

    /**
     * 清空epc选择参数
     *
     * @return
     */
    String epcClearParams();

    /**
     * epc 读取数据
     *
     * @param readData
     * @return
     */
    String epcReadLabelData(EpcReadDataParams2008 readData);

    /**
     * epc 写入数据
     *
     * @param writeData
     * @return
     */
    String epcWriteLabelData(EpcWriteDataParams2009 writeData);

    /**
     * GB盘存 2005
     *
     * @param panCun
     * @return
     */
    String gbPancun(GBPanCun200C panCun);

    /**
     * GB 选择标签2006
     *
     * @param choiceLabel200D
     * @return
     */
    String gbChoiceLabel(GBChoiceLabel200D choiceLabel200D);

    /**
     * 清空GB选择参数
     *
     * @return
     */
    String gbClearParams();

    /**
     * GB 读取数据
     *
     * @param readData
     * @return
     */
    String gbReadLabelData(GBReadDataParams200F readData);

    /**
     * GB 写入数据
     *
     * @param writeData
     * @return
     */
    String gbWriteLabelData(GBWriteDataParams2010 writeData);

    /**
     * 密钥协商
     *
     * @param secrect 协商类
     * @return
     */
    String secretKey(SecretKeyParams secrect);

    /**
     * 停止RFID操作
     *
     * @return
     */
    String stopRfid();

    /**
     * 设置现场校验仪误差参数设置
     *
     * @param data
     * @return
     */
    String setJyyWcParams(String data);

    /**
     * 获取校验仪误差结果数据
     *
     * @return
     */
    String getJyyWcResult(String taskOnlyNum);

    /**
     * 设置现场校验仪时间
     *
     * @return
     */
    String setJyyTiming(String data);

    /**
     * 设置现场校仪走字误差参数（F1=0x95）
     *
     * @param data
     * @return
     */
    String setJyyZouZiWcParams(String data);

    /**
     * 请求现场校仪走字误差任务结果（F1=0x96）
     *
     * @return
     */
    String getJyyZouZiWcResult(String taskOnlyNum);

    /**
     * 请求现场校仪接线检查数据（F1=0x97）
     *
     * @param data
     * @return
     */
    String getJyyJiexianError(String data);

    /**
     * 设置现场校验仪日计时误差参数设置（F1=0x98）
     *
     * @param data
     * @return
     */
    String setJyyRijishiParams(String data);

    /**
     * 请求现场校仪日计时误差数据（F1=0x99）
     *
     * @return
     */
    String getJyyRijishiResult(String taskOnlyNum);

    /**
     * HPLC信息查询
     *
     * @param data
     * @return
     */
    String getHPLCXxcxData(String data);

    /**
     * HPLC电能表抄读
     *
     * @param data
     * @return
     */
    String getHPLCDnbXxcxData(String data);

    /**
     * 通讯功能测试
     *
     * @param data
     * @return
     */
    String sendHPLCTxgnData(String data);

    /**
     * HPLC停电事件主动上报
     *
     * @param data
     * @return
     */
    String sendHPLCTdsjzdsbData(String data);

    /**
     * HPLC组网时间测试
     *
     * @param data
     * @return
     */
    String sendHPLCZwcsData(String data);

    /**
     * 新台区组网效果测试
     *
     * @param data
     * @return
     */
    String sendHPLCXtqzwxgcsData(String data);

    /**
     *  互换性测试
     *
     * @param data
     * @return
     */
    String sendHPLCHhxcsData(String data);

    /**
     *  网络拓扑分析
     * @param data
     * @return
     */
    String sendHPLCWltptfxData(String data);

    /**
     * 作业安全识别外设识别码
     *
     * @return
     */
    String getSafeIdentifyDevice();

    /**
     * 清空GB选择参数
     *
     * @return
     */
    String setSafeIdentifysTask(String data);

    /**
     * 作业安全识别从站异常推送
     *
     * @return
     */
    String setSafeIdentifySend();
}
